/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._1184;

/**
 *
 * 环形公交路线上有 n 个站，按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离，distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。
 *
 * 环线上的公交车都可以按顺时针和逆时针的方向行驶。
 *
 * 返回乘客从出发点 start 到目的地 destination 之间的最短距离。
 *
 * 输入：distance = [1,2,3,4], start = 0, destination = 3
 * 输出：4
 * 解释：公交站 0 和 3 之间的距离是 6 或 4，最小值是 4。
 *
 *
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._1184
 * @ClassName: DistanceBetween
 * @Author: linyaonan
 * @Date: 2020/1/10 18:58
 */
public class DistanceBetween {

    public int distanceBetweenBusStops(int[] distance, int start, int destination) {
        if (start > destination) {
            int temp = start;
            start = destination;
            destination = temp;
        }
        int amin = 0;
        int bmin = 0;
        for (int i = start; i < destination; i++) {
            amin += distance[i];
        }
        for (int i = start; i > 0; i--) {
            bmin += distance[i-1];
            if (bmin >= amin) {
                return amin;
            }
        }
        for (int i = distance.length - 1; i >= destination; i--) {
            bmin += distance[i];
            if (bmin >= amin) {
                return amin;
            }
        }
        return Math.min(amin, bmin);
    }

}
